/**
 * 圣园未花我真的好喜欢你啊！为了你，我要，我要...开发一个后端服务！    
 */

/**
 * VisionScreen 后端服务主入口文件
 * 
 * 功能说明：
 * 1. 配置和初始化Express应用
 * 2. 设置中间件（CORS、请求解析等）
 * 3. 注册API路由
 * 4. 错误处理
 * 5. 启动服务器
 */

const express = require('express');
const cors = require('cors');
require('dotenv').config();

const userRoutes = require('./routes/user.routes');

const app = express();

/**
 * 中间件配置
 * 1. CORS - 允许跨域请求
 * 2. JSON解析 - 处理JSON格式的请求体
 * 3. URL编码 - 处理URL编码的请求体
 */
// 配置CORS中间件
app.use((req, res, next) => {
  // 前端应用的确切地址
  const frontendOrigin = 'http://8.218.216.246:5000';
  
  const origin = req.headers.origin;
  if (origin === frontendOrigin) {
    res.header('Access-Control-Allow-Origin', frontendOrigin);
    res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
    res.header('Access-Control-Allow-Credentials', 'true');
  }
  
  // 处理 OPTIONS 请求
  if (req.method === 'OPTIONS') {
    return res.sendStatus(200);
  }
  next();
});
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

/**
 * API路由注册
 * /api/users - 用户相关的所有接口
 */
app.use('/api/users', userRoutes);

/**
 * 全局错误处理中间件
 * 捕获并处理整个应用中未被捕获的错误
 */
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ message: 'Something went wrong!' });
});

// 服务器配置和启动
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
